var $articleListTable;
var $articleAddOrUpdateModal;
$(function(){
		selectByCategory();
		$articleListTable = $('#user-article-list-table');
		$articleAddOrUpdateModal = $("#article-add-or-update-modal");
		 //1.初始化Table
	    var oTable = new TableInit();
	    oTable.Init();

	    //2.初始化Button的点击事件
	    var oButtonInit = new ButtonInit();
	    oButtonInit.Init();
});

var TableInit = function () {
	var oTableInit = new Object();
	//初始化Table
    oTableInit.Init = function () {
    	$articleListTable.bootstrapTable({
            url: 'user/article/articleList',         //请求后台的URL（*）
            contentType: "application/x-www-form-urlencoded",//post请求的话就加上这个句话
            method: 'post',                      //请求方式（*）
            toolbar: '#toolbar',                //工具按钮用哪个容器
            striped: true,                      //是否显示行间隔色
            cache: false,                       //是否使用缓存，默认为true，所以一般情况下需要设置一下这个属性（*）
            pagination: true,                   //是否显示分页（*）
            sortable: false,                     //是否启用排序
            sortOrder: "desc",                   //排序方式
            queryParams: oTableInit.queryParams,//传递参数（*）
            sidePagination: "server",           //分页方式：client客户端分页，server服务端分页（*）
            pageNumber:1,                       //初始化加载第一页，默认第一页
            pageSize: 10,                       //每页的记录行数（*）
            pageList: [10, 25, 50, 100],        //可供选择的每页的行数（*）
           // search: true,                       //是否显示表格搜索，此搜索是客户端搜索，不会进服务端，所以，个人感觉意义不大
            strictSearch: true,
          //  showColumns: true,                  //是否显示所有的列
           // showRefresh: true,                  //是否显示刷新按钮
            minimumCountColumns: 2,             //最少允许的列数
            clickToSelect: true,                //是否启用点击选中行
            height: 540,                        //行高，如果没有设置height属性，表格自动根据记录条数觉得表格高度
            uniqueId: "ID",                     //每一行的唯一标识，一般为主键列
            //showToggle:true,                    //是否显示详细视图和列表视图的切换按钮
          //  cardView: false,                    //是否显示详细视图
            //detailView: false,                   //是否显示父子表
            columns: [{
                checkbox: true
            }, {
                field: 'id',
                title: 'ID',
                visible:false
            }, {
                field: 'articleTitle',
                title: '标题',
                formatter: function (value, row, index) {
                	if(value && value.length >=15){
                		return	value.substr(1,15) +"...";
                	}else{
                		return value;
                	}
                }
            }, {
                field: 'articleBriefIntroduction',
                title: '简要概述',
                formatter: function (value, row, index) {
                	if(value && value.length >=15){
                		return	value.substr(1,15) +"...";
                	}else{
                		return value;
                	}
                }
            }, {
                field: 'articleContent',
                title: '内容',
                formatter: function (value, row, index) {
                	if(value && value.length >=15){
                		return	value.substr(1,15) +"...";
                	}else{
                		return value;
                	}
                }
            }, {
                field: 'clickRate',
                title: '浏览'
            }, {
                field: 'supportNum',
                title: '支持'
            }, {
                field: 'opposeNum',
                title: '踩'
            }, {
                field: 'collectNum',
                title: '收藏'
            }, {
                field: 'status',
                title: '状态',
                formatter: function (value, row, index) {
                	if(0 == value){
                        return "<div style='color:#0000FF;'>草稿</div>";
                      }else if(1 == value){
                        return "<div style='color:#EE4000;'>待审核</div>";
                      }else if(2 == value){
                        return "<div style='color:#008B45;'>已发布</div>";
                      }else{
                        return "<div style='color:#EDEDED;'>回收站</div>";
                      }
                }
            }]
        });
    };
    
  //得到查询的参数
    oTableInit.queryParams = function (params) {
        var temp = {   //这里的键的名字和控制器的变量名必须一直，这边改动，控制器也需要改成一样的
            limit: params.limit,   //页面大小
            offset: params.offset/params.limit+1,  //页码
            articleTitle: $("#articleTitle").val(),
            status: $("#status").val()
        };
        return temp;
    };
    return oTableInit;
};


var ButtonInit = function () {
    var oInit = new Object();

    oInit.Init = function () {
        //初始化页面上面的按钮事件
    	$("#article-query").on("click",function(){
    		articleRefresh();
    	});
    	//重置
    	$("#article-reset").on("click",function(){
    		$("#formSearch")[0].reset();
    		articleRefresh();
    	});
    	
    	//新增
    	$("#article-add-btn").on("click",function(){
    		articleAdd();
    	});
    	
    	//修改
    	$("#article-edit-btn").on("click",function(){
    		articleEdit();
    	});
    	
    	//删除
    	$("#article-delete-btn").on("click",function(){
    		articleDeletes(0);
    	});
    	
    	//回收站
    	$("#article-recycle-btn").on("click",function(){
    		articleDeletes(1);
    	});
    	
    	//存草稿
    	$("#article-draft-btn").on("click",function(){
    		articleSave(0);
    	});
    	
    	//提交
    	$("#article-save-btn").on("click",function(){
    		articleSave(1);
    	});
    };
    return oInit;
};

var articleRefresh = function(){
	$articleListTable.bootstrapTable('refresh');
}

var articleAdd = function(){
	$("#article-form")[0].reset();
	 $("#articleId").val("");
	 UE.getEditor('editor').setContent("");
	 $articleAddOrUpdateModal.modal("show");
}

var articleEdit = function(){
	var rows = $articleListTable.bootstrapTable('getSelections');
	if(!rows || rows.length != 1){
		$.util.alert('请选择一条记录!');
		return;
	}
	$articleAddOrUpdateModal.modal("show");
	$("#article-form").setForm(JSON.parse(JSON.stringify(rows[0])));
	UE.getEditor('editor').setContent(rows[0].articleContent);
}

var articleDeletes = function(status){
	var rows = $articleListTable.bootstrapTable('getSelections');
	if(!rows || rows.length < 1){
		$.util.alert('请至少选择一条记录!');
		return;
	}
	$.util.confirm("你确认要"+(status ==0?"删除吗？删除后将不能恢复":"放入回收站吗？"),function(r){
		if(r){
			var params = {};
			params.articleList = rows;
			var url = "user/article/batchDelete";
			if(status == 1){//回收站
				url = "user/article/batchUpdateStatus";
			}
			$.ajax({
				type:'POST',
				url:url,
				async:false,
				dataType:'json',
				contentType:"application/json", // 指定这个协议很重要
		        data:JSON.stringify(params), //只有这一个参数，json格式，后台解析为实体，后台可以直接用
				success:function(result){
					if(result && result.success){
						articleRefresh();
					}
					$.util.alert(result.message);
				}
			});
		}
	});
	
}

function selectByCategory(){
	var url = 'user/article/selectByCategory';
	var categoryId = $('#categoryId option:selected').val();
	var params = {'category':categoryId};
	ajaxAsyncResult(url,params,function(success,result){
		if(success){
			$('#articleTypeId').empty();
	 		for(var i=0;i<result.obj.length;i++){
				$('#articleTypeId').append("<option value=\""+result.obj[i].id+"\">"+result.obj[i].articleTypeName+"</option>");
	 		}
		}
	});
}

/**
 * 文章保存
 */
var articleSave = function(status){
	var articleTitle = $("#article-form input[name='articleTitle']").val();
	var articleBriefIntroduction = $("#article-form input[name='articleBriefIntroduction']").val();
	var categoryId = $("#article-form select[name='categoryId']").val();
	var articleTypeId = $("#article-form select[name='articleTypeId']").val();
	var articleKeyword = $("#article-form #articleKeyword").val();
	if(!articleTitle || !articleBriefIntroduction || !categoryId || !articleTypeId || !articleKeyword){
		$.util.alert('红色*的必填不能为空!');
		return;
	}
	
	if(articleBriefIntroduction.length >120){
		$.util.alert('简要概述最长不能超过120字!');
		return;
	}
	var url = 'user/article/articleSave';
	var params =  $("#article-form").serialize().replace("editorValue","articleContent").concat("&status="+status);
	ajaxAsyncResult(url,params,function(success,result){
		if(success){
			$.util.alert(result.message);
			 $("#article-form")[0].reset();
			 $("#articleId").val("");
			 UE.getEditor('editor').setContent("");
			 $articleAddOrUpdateModal.modal("hide");
		}else{
			$.util.alert(result.message);
		}
		articleRefresh();
	});
}


